How to eliminate 'aging' loops / global ticks / etc.

For anything that is affected by time, its updated value is computed at the time it's _read_. Thus, it takes no CPU load.

Problems:
  Value A is computed based on value B, and vice versa. Depending on the relationship, this _might_ be computable.
  The rate of change of value A depends on value B and time. B changes. This is not impossible to solve; simply attach a watcher to value B that "touches" value A.

Okay, here's another solution; this applies to 'recharging' things only, but other solutions might be found for other things...

Whenever <value> drops below 100%, start an event chain / repeating event that causes recharging until back to 100%.